package com.atguigu.gmall.product.client;

import com.atguigu.gmall.model.product.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Author: lx
 * @Time: 16:00
 * @Description:
 */
@FeignClient(name = "service-product")
public interface ProductClientFeign {

    //1:库存的名称  库存的图片   包含spuId 入参：skuId  URL  返回值 图片集合
    @GetMapping("/api/product/inner/getSkuInfo/{skuId}")
    public SkuInfo getSkuInfo(@PathVariable(name = "skuId") Long skuId);
    //2：商品分类 一级 二级 三级  入参：category3_id  URL:随便写  返回值：三级分类名称 不要ID
    @GetMapping("/api/product/inner/getCategoryView/{category3id}")
    public BaseCategoryView getCategoryView(@PathVariable(name = "category3id") Long category3id);
    //3：价格  库存的
    @GetMapping("/api/product/inner/getPrice/{skuId}")
    public BigDecimal getPrice(@PathVariable(name = "skuId") Long skuId);

    //4:销售属性集合 入参：库存ID skuId  商品ID spuId  返回值 销售属性集合
    @GetMapping("/api/product/inner/getSpuSaleAttrListCheckBySku/{skuId}/{spuId}")
    public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(
            @PathVariable(name = "skuId") Long skuId,
            @PathVariable(name = "spuId") Long spuId
    );

    //5：点击其他销售属性值的组合，跳转到另外的sku页面
    @GetMapping("/api/product/inner/getSkuValueIdsMap/{spuId}")
    public Map<String,String> getSkuValueIdsMap(@PathVariable(name = "spuId") Long spuId);

    //查询所有一二三级分类
    @GetMapping("/api/product/inner/getCategoryViewList")
    public List<BaseCategoryView> getCategoryViewList();

    //根据ID查询品牌
    @GetMapping("/api/product/inner/getTrademark/{tmId}")
    public BaseTrademark getTrademark(@PathVariable(name = "tmId")
                                              Long tmId);
    //根据SkuID 查询平台属性及值
    @GetMapping("/api/product/inner/getAttrValueList/{skuId}")
    public List<SkuAttrValue> getAttrValueList(@PathVariable(name = "skuId")
                                                       Long skuId);
}
